/**
 * 初始化表单编辑区域
 * <p>
 * 编辑窗口关闭后,原GEForm并没有清空,需=null置空,否则再次打开窗口时会很出现脚本异常
 * </p>
 */
function renewForm(id, tlt) {
	var GEForm = new Ext.FormPanel({
		labelWidth : 75, // label settings here cascade unless
		frame : false,
		title : tlt + '信息编辑',
		bodyStyle : 'border:0px; padding:5px;',
		width : 450,
		defaults : {
			width : 300
		},
		defaultType : 'textfield',

		items : [
				{
					xtype : 'hidden',
					name : 'gid',
					value : id
				},
				{
					fieldLabel : '组织名称',
					name : 'gname',
					allowBlank : false
				},
				{
					fieldLabel : '组织描述',
					xtype : 'textarea',
					name : 'gintro'
				},
				getWBComboStore('group-rating', '', 'grating_', '组织级别',
						'grating', null, '0'),
				{
					xtype : 'hidden',
					name : 'grating',
					id : 'grating'
				},
				getWBComboStore('area', '', 'garea_', '所属区域', 'garea', null, ''),
				{
					xtype : 'hidden',
					name : 'garea',
					id : 'garea'
				}, {
					fieldLabel : '机构代码',
					name : 'gnumber',
					allowBlank : false
				}, new Ext.form.RadioGroup({
							fieldLabel : "分支机构",
							// //RadioGroup.fieldLabel 标签与
							// Radio.boxLabel 标签区别
							// width : "200",
							// hideLabel : true, // 隐藏RadioGroup标签
							items : [new Ext.form.Radio({ // 三个必须项
										id : "branch0",
										// checked : true, //
										// 设置当前为选中状态,仅且一个为选中.
										boxLabel : "否", // Radio标签
										name : "gbranch", // 用于form提交时传送的参数名
										inputValue : "0", // 提交时传送的参数值
										listeners : {
											check : function(checkbox, checked) { // 选中时,调用的事件
												if (checked) {

												}
											}
										}
									}), new Ext.form.Radio({ // 以上相同
										id : "branch1",
										boxLabel : "是",
										name : "gbranch",
										inputValue : "1",
										listeners : {
											check : function(checkbox, checked) {
												if (checked) {

												}
											}
										}
									})]
						})],

		buttons : [{
			text : '保 存',
			type : 'submit',
			handler : function() {
				if (GEForm.getForm().isValid()) {
					var but = this;
					but.setDisabled(true);
					Ext.MessageBox.wait('提交保存过程中...');

					GEForm.getForm().submit({
						url : context + '/system/group.do?method=update',
						method : "POST",
						success : function(form, action) {
							Ext.MessageBox.hide();
							but.setDisabled(false);
							Ext.Msg.alert('提示', '已成功提交保存组信息！');
							grouptree.getSelectionModel().getSelectedNode()
									.setText(action.result.gname);
						},
						failure : function(form, action) {
							Ext.MessageBox.hide();
							but.setDisabled(false);
							Ext.Msg.alert('提示', '提交保存组信息发生错误！');
						}
					});
				}
			}
		}, {
			text : '重 置',
			handler : function() {
				GEForm.getForm().reset();
			}

		}]
	});

	GEForm.getForm().load({
				url : context + '/system/group.do?method=edit',
				params : {
					id : id
				},
				waitTitle : '提示',
				waitMsg : '正在加载数据,请稍候...',
				animEl : "loding",
				success : function(form, action) {
					var resultInfo = listSimpleJson(action.result.data);

					var gbranch = resultInfo.get("gbranch");

					if (gbranch == "0") {
						Ext.get("branch0").dom.checked = true;
					} else if (gbranch == "1") {
						Ext.get("branch1").dom.checked = true;
					}

					// Ext.getCmp('garea_').setValue(resultInfo.get("garea"));
					// Ext.getCmp('grating_').setValue(resultInfo.get("grating"));
				},
				failure : function(form, action) {
					Ext.Msg.alert('读取组信息失败');
				}
			});

	return GEForm;
};

/**
 * 初始化新建组/部门form
 * 
 * @param {}
 *            id 父组ID
 * @param {}
 *            tlt 父组名称
 */
function renewAddForm(id, tlt) {
	var GEForm = new Ext.FormPanel({
		labelWidth : 75, // label settings here cascade unless
		frame : false,
		bodyStyle : 'border:0px; padding:5px;',
		width : 400,
		defaults : {
			width : 300
		},
		defaultType : 'textfield',

		items : [
				{
					fieldLabel : '父组名称',
					readOnly : true,
					value : tlt
				},
				{
					xtype : 'hidden',
					name : 'pid',
					value : id
				},
				{
					xtype : 'hidden',
					name : 'gid',
					value : ''
				},
				{
					fieldLabel : '组织名称',
					name : 'gname',
					allowBlank : false
				},
				{
					fieldLabel : '组织描述',
					xtype : 'textarea',
					name : 'gintro'
				},
				getWBComboStore('group-rating', '', 'grating0_', '组织级别',
						'grating'), {
					xtype : 'hidden',
					name : 'grating',
					id : 'grating'
				}, getWBComboStore('area', '', 'garea0_', '所属区域', 'garea'), {
					xtype : 'hidden',
					name : 'garea',
					id : 'garea'
				}, {
					fieldLabel : '机构代码',
					name : 'gnumber'
				}, new Ext.form.RadioGroup({
							fieldLabel : "分支机构",
							// //RadioGroup.fieldLabel 标签与
							// Radio.boxLabel 标签区别
							// width : "200",
							// hideLabel : true, // 隐藏RadioGroup标签
							items : [new Ext.form.Radio({ // 三个必须项
										// checked : true, //
										// 设置当前为选中状态,仅且一个为选中.
										boxLabel : "否", // Radio标签
										name : "gbranch", // 用于form提交时传送的参数名
										inputValue : "0", // 提交时传送的参数值
										listeners : {
											check : function(checkbox, checked) { // 选中时,调用的事件
												if (checked) {

												}
											}
										}
									}), new Ext.form.Radio({ // 以上相同
										boxLabel : "是",
										name : "gbranch",
										inputValue : "1",
										listeners : {
											check : function(checkbox, checked) {
												if (checked) {

												}
											}
										}
									})]
						})]
	});

	var addGroupWin = new Ext.Window({
		renderTo : Ext.getBody(),
		layout : 'fit',
		width : 500,
		height : 400,
		title : '新组/部门定义',
		resizable : false,
		plain : true,
		modal : true,

		items : [GEForm],

		buttons : [{
			text : '保 存',
			type : 'submit',
			handler : function() {
				if (GEForm.getForm().isValid()) {
					var but = this;
					but.setDisabled(true);
					Ext.MessageBox.wait('提交保存过程中...');

					GEForm.getForm().submit({
						url : context + '/system/group.do?method=save',
						method : "POST",
						success : function(form, action) {
							Ext.MessageBox.hide();
							but.setDisabled(false);
							Ext.Msg.alert('提示', '已成功提交保存组信息！');
							addGroupNode(action.result.id, GEForm.getForm()
											.findField("gname").getValue(), id);
							addGroupWin.close();
							addGroupWin = null;
						},
						failure : function(form, action) {
							Ext.MessageBox.hide();
							but.setDisabled(false);
							Ext.Msg.alert('提示', '提交保存组信息发生错误！');
						}
					});
				}
			}
		}, {
			text : '重 置',
			handler : function() {
				GEForm.getForm().reset();
			}

		}, {
			text : '关 闭',
			handler : function() {
				addGroupWin.close();
				addGroupWin = null;
			}
		}]
	});

	addGroupWin.show(this);
};

/**
 * 显示组编辑form
 * 
 * @param {}
 *            id 组ID
 * @param {}
 *            tlt 组名称
 */
function showEditForm(id, tlt) {
	if (groupEditTabs.items.getCount() > 0) {
		// GEForm.destroy();
		groupEditTabs.remove(0);
	}

	groupEditTabs.add(renewForm(id, tlt)).show();
}

/**
 * 显示新建组/部门form
 * 
 * @param {}
 *            id 父组ID
 * @param {}
 *            tlt
 */
function showAddForm(id, tlt) {
	renewAddForm(id, tlt);
}

function delNode() {
	Ext.MessageBox.confirm('提示', '确定删除', deleteGroup);
}

function deleteGroup(btn) {
	if (btn == 'yes') {
		Ext.MessageBox.wait('删除过程中...');

		Ext.Ajax.request({
			url : context + '/system/group.do?method=delete',
			method : "POST",
			params : {
				gid : grouptree.getSelectionModel().getSelectedNode().attributes.realid
			},
			success : function(response, options) {
				var o = Ext.util.JSON.decode(response.responseText);
				if (o.success) {
					Ext.MessageBox.hide();
					removeGEForm(grouptree.getSelectionModel()
							.getSelectedNode().attributes.realid);
					grouptree.getSelectionModel().getSelectedNode().remove();
					Ext.Msg.alert('提示', '成功删除组！');
				} else {
					Ext.MessageBox.hide();
					Ext.Msg.alert('提示', '删除组失败！');
				}
			}
		});
	}
}

/**
 * 删除组编辑form
 * 
 * @param {}
 *            id
 */
function removeGEForm(id) {
	if (groupEditTabs.items.itemAt(0).getForm().findField("gid").getValue() == id) {
		groupEditTabs.remove(0);
	}
}

function addGroupNode(id, name, pid) {
	var groupNode = new Ext.tree.TreeNode({
				id : 'g' + id,
				text : name,
				realid : id,
				type : 'group',
				isroot : false,
				leaf : false,
				parentId : 'g' + pid,
				haschildren : false,
				iconCls : 'icon-group'
			});

	grouptree.getNodeById('g' + pid).appendChild(groupNode);
}